gtk4.git
10 years agobox gadget: Don't allow shifting too far
Matthias Clasen [Sat, 23 Jan 2016 03:49:01 +0000 (22:49 -0500)]
box gadget: Don't allow shifting too far

We don't want to let baseline adjustment shift the child
out of the original allocation. This is purely a sanity
measure - in practice, the baseline should always be bigger
than the child_baseline.

10 years agobox gadget: Fix baseline calculation
Matthias Clasen [Sat, 23 Jan 2016 03:47:47 +0000 (22:47 -0500)]
box gadget: Fix baseline calculation

Careful comparison with GtkBox revealed that the box gadget
code was confusing up and down, and thus shifted baselines
vertically.

10 years agoinspector: Show baseline value
Matthias Clasen [Sat, 23 Jan 2016 03:24:46 +0000 (22:24 -0500)]
inspector: Show baseline value

The misc info page already shows the allocation and clip areas,
the baseline fits right in.

10 years agobox gadget: Fix baseline allocation for widgets
Matthias Clasen [Sat, 23 Jan 2016 03:08:38 +0000 (22:08 -0500)]
box gadget: Fix baseline allocation for widgets

We were adjusting the allocation to line up baselines before
calling gtk_widget_size_allocate_with_baseline, but that function
is doing this alignment internally anyway and expects to be given
a 'fill' allocation.

Move the allocation adjustment code down into
gtk_box_gadget_allocate_child where it only affects child gadgets,
not child widgets.

10 years agogadget: Add baseline debugging
Matthias Clasen [Sat, 23 Jan 2016 02:34:54 +0000 (21:34 -0500)]
gadget: Add baseline debugging

This should help to understand whats going wrong with
baselines.

10 years agoAdwaita: Move .ssd class around
Matthias Clasen [Sat, 23 Jan 2016 00:23:54 +0000 (19:23 -0500)]
Adwaita: Move .ssd class around

Make the theme follow our documentation for the various .csd and
.ssd style classes: They all go on the window node. For now, just
add the new selector; the old one will be removed when mutter has
been updated.

https://bugzilla.gnome.org/show_bug.cgi?id=760714

10 years agobox gadget: Fix height-for-width handling
Matthias Clasen [Fri, 22 Jan 2016 22:10:41 +0000 (17:10 -0500)]
box gadget: Fix height-for-width handling

When measuring children while distributing a given height,
we must measure them for the given width that goes with
the height. Otherwise, things will go wrong if some of the
children do actual width-for-height. This was showing up
as misaligned images in anaconda.

https://bugzilla.gnome.org/show_bug.cgi?id=760967

10 years agoGtkTreeView: Update prelight row after revalidating rows
Carlos Garnacho [Thu, 21 Jan 2016 14:22:42 +0000 (15:22 +0100)]
GtkTreeView: Update prelight row after revalidating rows

It might have changed (eg. after a row being expanded, and the child
rows revalidated), so just update it here based on the last pointer
position.

Based on a patch by Maxim Reznik <reznikmm@gmail.com>

https://bugzilla.gnome.org/show_bug.cgi?id=760891

10 years agoGtkTreeView: Avoid device query on collapsing rows
Carlos Garnacho [Thu, 21 Jan 2016 14:21:16 +0000 (15:21 +0100)]
GtkTreeView: Avoid device query on collapsing rows

The pointer position is queried to properly trigger the prelight
updates on the new row below it. We store the last coordinates
though, and track crossing events to unset these, so it's safe
to just update_prelight() here on these.

10 years agoshortcuts: Don't forall() widgets that aren't children
Benjamin Otte [Fri, 22 Jan 2016 19:39:14 +0000 (20:39 +0100)]
shortcuts: Don't forall() widgets that aren't children

10 years agowidget: Improve gtk_cairo_should_draw_window()
Benjamin Otte [Thu, 21 Jan 2016 15:53:25 +0000 (16:53 +0100)]
widget: Improve gtk_cairo_should_draw_window()

Check that non-native window are indeed children of the event window and
only then confirm that they should be drawn.

Fixes Glade thinking that it's okay to have the draw function do
different things depending on what window to draw. (This should really
be fixed in Glade.)

10 years agocssstyleproperty: Don't allow assigning min-width/min-height
Benjamin Otte [Thu, 21 Jan 2016 12:31:14 +0000 (13:31 +0100)]
cssstyleproperty: Don't allow assigning min-width/min-height

10 years agocontainer: Turn assert into return_if_fail()
Benjamin Otte [Thu, 21 Jan 2016 01:19:04 +0000 (02:19 +0100)]
container: Turn assert into return_if_fail()

There's no reason to insta-crash when something goes wrong. Just don't
do anything stupid.

Also, remove the SPCIAL_CONTAINER() exception. Every case where special
containers needed this, it is wrong and made containers draw children
multiple times.

10 years agostack: Clip animation drawing
Benjamin Otte [Thu, 21 Jan 2016 00:44:47 +0000 (01:44 +0100)]
stack: Clip animation drawing

We use cairo_paint() when doing that and we don't want to overdraw the
content area.

10 years agospinbutton: Make the entry gadget be the entry's gadget
Benjamin Otte [Thu, 21 Jan 2016 00:22:41 +0000 (01:22 +0100)]
spinbutton: Make the entry gadget be the entry's gadget

This is a big and somewhat evil hack: We replace the entry's gadget's
node with the spinbutton's entry node.

10 years agoAdwaita: fix checks and radios on selected row
Lapo Calamandrei [Fri, 22 Jan 2016 12:29:35 +0000 (13:29 +0100)]
Adwaita: fix checks and radios on selected row

10 years agotext view: Don't leak cairo transforms
Matthias Clasen [Fri, 22 Jan 2016 04:39:16 +0000 (23:39 -0500)]
text view: Don't leak cairo transforms

The text view draw function was leaving its cairo context
with a transformation after drawing to all the border windows,
which lead mis-drawing in gitg. Avoid this by moving the
gtk_cairo_transform_to_window call inside the existing
cairo_save/restore calls.

https://bugzilla.gnome.org/show_bug.cgi?id=760942

10 years agowayland: Don't hardcode /tmp
Matthias Clasen [Fri, 22 Jan 2016 03:53:06 +0000 (22:53 -0500)]
wayland: Don't hardcode /tmp

As pointed out in https://bugzilla.gnome.org/show_bug.cgi?id=760964,
we should use the GLib facilities for determining the preferred
location for temporary files.

10 years agoUpdated German translation
Mario Blättermann [Thu, 21 Jan 2016 16:48:25 +0000 (17:48 +0100)]
Updated German translation

10 years agocssstyleproperty: Make it possible to query CSS opacity with gtk_style_context_get()
Carlos Garcia Campos [Thu, 21 Jan 2016 13:36:42 +0000 (14:36 +0100)]
cssstyleproperty: Make it possible to query CSS opacity with gtk_style_context_get()

Add a query implementation to opacity property. Also fix the assert in
gtk_css_style_property_register() to allow registering properties with
query but without assign function.

https://bugzilla.gnome.org/show_bug.cgi?id=760933

10 years agoAdwaita: first css check/radio implementation
Lapo Calamandrei [Thu, 21 Jan 2016 02:12:10 +0000 (03:12 +0100)]
Adwaita: first css check/radio implementation

draw checks and radios with css istead of relying on png assets.

10 years agocss: Fix refcounting thinko in -gtk-recolor
Matthias Clasen [Thu, 21 Jan 2016 13:42:55 +0000 (08:42 -0500)]
css: Fix refcounting thinko in -gtk-recolor

gtk_css_style_get_value does not return a reference.
So don't unref the return value without taking one.

10 years agoHandle svg image assets in Adwaita
Matthias Clasen [Thu, 21 Jan 2016 13:20:06 +0000 (08:20 -0500)]
Handle svg image assets in Adwaita

The build glue for collecting all the assets in Adwaita as
resources was assuming that they are all pngs, and tried to
preprocess them into embedded GdkPixbufs.
Fix it to leave svgs unmolested, so they can be recolored
at runtime.

10 years agocss: Handle image loading errors graciously
Matthias Clasen [Thu, 21 Jan 2016 13:18:46 +0000 (08:18 -0500)]
css: Handle image loading errors graciously

If we fail to load the image for a -gtk-recolor() expression,
fall back to using the image-missing icon instead of crashing,
and include more details in the warning message.

10 years agoForgotten file
Matthias Clasen [Thu, 21 Jan 2016 13:18:28 +0000 (08:18 -0500)]
Forgotten file

10 years agoAdwaita: Set a text color for lists
Matthias Clasen [Thu, 21 Jan 2016 03:53:47 +0000 (22:53 -0500)]
Adwaita: Set a text color for lists

Symbolic icons in list boxes came out white-on-white in the
inspector. Set an explicit text color to prevent that.

10 years agoinspector: Show full allocation + clip
Matthias Clasen [Thu, 21 Jan 2016 03:52:05 +0000 (22:52 -0500)]
inspector: Show full allocation + clip

Previously, we were only showing the size of the allocation
and clip area. But there is no good reason to hide the position
of these rectangles, so add them, in the traditional format
of X geometry strings: wxh+x+y

10 years agoinspector: Refine typography
Matthias Clasen [Thu, 21 Jan 2016 03:51:25 +0000 (22:51 -0500)]
inspector: Refine typography

Use thin spaces in the formatting of monitor sizes.

10 years agoFix GtkShortcutsWindow crash
Matthias Clasen [Thu, 21 Jan 2016 00:33:16 +0000 (19:33 -0500)]
Fix GtkShortcutsWindow crash

GtkShortcutsWindow is among the 'cheating' containers that iterate
over indirect children in forall, and this is now triggering
an assertion in gtk_container_propagate_draw.

For now, just exclude the cheating containers from the assertion.
Eventually, this needs a better solution.

10 years agowayland: don't pass in width and height to create_shm_pool
Ray Strode [Wed, 20 Jan 2016 17:35:44 +0000 (12:35 -0500)]
wayland: don't pass in width and height to create_shm_pool

create_shm_pool doesn't need the width or height, it just needs
the total size.  By passing it in, we're requiring it to redo
stride calculation unnecessarily.

This commit drops the width and height parameters and makes the
function just take the total size directly.

https://bugzilla.gnome.org/show_bug.cgi?id=760897

10 years agowayland: clean up stride calculation when creating shm surface
Ray Strode [Wed, 20 Jan 2016 16:40:34 +0000 (11:40 -0500)]
wayland: clean up stride calculation when creating shm surface

Right now, we assume the stride for the image surface needs to
be 4 byte aligned.  This is, in fact, true, but it's better to
ask cairo for the alignment requirement directly rather than
assume we know the alignment rules.

This commit changes the code to use cairo_format_stride_for_width
to calculate a suitable rowstride for pixman.

https://bugzilla.gnome.org/show_bug.cgi?id=760897

10 years agowayland: unlink shm file earlier in create function
Ray Strode [Wed, 20 Jan 2016 17:22:29 +0000 (12:22 -0500)]
wayland: unlink shm file earlier in create function

create_shm_pool unlinks the temporary file a little,
too late. It should be unlinked before ftruncate()
is called for two reasons:

1) if ftruncate fails, the file is currently not
getting cleaned up at all
2) in theory, if the file is public some other process
could muck with it

This commit just moves the unlink call a little higher
up.

https://bugzilla.gnome.org/show_bug.cgi?id=760897

10 years agoGtkNotebook: Unify two private variables
Carlos Garnacho [Wed, 20 Jan 2016 18:52:01 +0000 (19:52 +0100)]
GtkNotebook: Unify two private variables

Button state was being kept in two separate variables, which lead
to slight confusions in DnD that caused the notebook to ignore the
first click after DnD happened from (within) it. Unify these two
into one, which helps us keep better track of the really pressed
buttons.

10 years agocontainer: Don't create too-large clips
Matthias Clasen [Wed, 20 Jan 2016 18:42:45 +0000 (13:42 -0500)]
container: Don't create too-large clips

gdk_rectangle_union will happily add all the worlds pixels
to the union if the initial rectangle is initialized to all
zeros. Therefore, explicitly check for an empty rectangle
before calling it.

10 years agoClarify docs for gdk_rectangle_union
Matthias Clasen [Wed, 20 Jan 2016 18:12:13 +0000 (13:12 -0500)]
Clarify docs for gdk_rectangle_union

This function does not ignore empty rectangles. Since this
is a fairly subtle point about the behavior, it is worth
spelling this out in the documentation. We've had a bug
open about this for a long time:

https://bugzilla.gnome.org/show_bug.cgi?id=464528

10 years agowayland: Protect against NULL offers on gdk_drag_status() implementation
Carlos Garnacho [Wed, 20 Jan 2016 17:55:51 +0000 (18:55 +0100)]
wayland: Protect against NULL offers on gdk_drag_status() implementation

If we're called untimely, we might end up crashing here when poking the
NULL wl_data_offer.

10 years agogtkdnd: Disconnect GdkDragContext signals on gtk_drag_source_info_free()
Carlos Garnacho [Wed, 20 Jan 2016 17:53:03 +0000 (18:53 +0100)]
gtkdnd: Disconnect GdkDragContext signals on gtk_drag_source_info_free()

Otherwise it may still be tricked into emitting further signals at a
time we've already destroyed the GtkDragSourceInfo passed as callback
user data.

10 years agonotebook: Get rid of during_reorder variable
Benjamin Otte [Wed, 20 Jan 2016 16:37:04 +0000 (17:37 +0100)]
notebook: Get rid of during_reorder variable

Use operation == OPERATION_REORDER instead.

10 years agonotebook: Properly hide drag window
Benjamin Otte [Wed, 20 Jan 2016 16:20:03 +0000 (17:20 +0100)]
notebook: Properly hide drag window

Move code to properly reinsert the tab label to where it belongs.
The if has the distinction between reparented-to-dnd-window and
just-changed-the-gdk-window-to-draw-to right there.

https://bugzilla.gnome.org/show_bug.cgi?id=760754

10 years agonotebook: Get rid of during_detach member
Benjamin Otte [Wed, 20 Jan 2016 15:45:40 +0000 (16:45 +0100)]
notebook: Get rid of during_detach member

use operation == OPERATION_DETACH instead.

10 years agoAdd a function to get affected area for background
Matthias Clasen [Wed, 20 Jan 2016 14:41:01 +0000 (09:41 -0500)]
Add a function to get affected area for background

The new function, gtk_render_background_get_clip answers the
question: what pixels are affected if I call gtk_render_background ?

The long-term goal is to have APIs that answer this question for
all rendering primitives.

10 years agofile chooser: Allow saving even if executable attribute is not set
Ondrej Holy [Wed, 20 Jan 2016 10:36:12 +0000 (11:36 +0100)]
file chooser: Allow saving even if executable attribute is not set

Commit 8e975b2 (Bug 753969) introduced check of parent accessibility.
Consequently it is not possible to save file if executable attribute
is not set, which might happen for some gvfs backends. Let's assume
that the folder is accessible even if the attribute is not set.

https://bugzilla.gnome.org/show_bug.cgi?id=760881

10 years agoconfigure: Require wayland >= 1.9.91
Kalev Lember [Wed, 20 Jan 2016 12:00:10 +0000 (13:00 +0100)]
configure: Require wayland >= 1.9.91

Needed since commit 1045dda0358dee67e8dfbf13b40181b4c2ba1f1c

10 years agoviewport: Don't destroy pixelcache while it's still used
Benjamin Otte [Wed, 20 Jan 2016 04:09:25 +0000 (05:09 +0100)]
viewport: Don't destroy pixelcache while it's still used

Removing the child unsets the pxielcache's style context...

10 years agogtk-demo: Fix font features sources
Matthias Clasen [Wed, 20 Jan 2016 03:45:37 +0000 (22:45 -0500)]
gtk-demo: Fix font features sources

The resources had the prefix, causing the ui file not
to show up.

10 years agoviewport: Set the pixel cache background from the child
Benjamin Otte [Wed, 20 Jan 2016 03:35:04 +0000 (04:35 +0100)]
viewport: Set the pixel cache background from the child

The viewport itself doesn't move, so we cannot use it as the pixel
cache's background. Use the bottommost using element instead, which is
the viewport's child.

This might need adaptations in themes as we want the backgroud to be
opaque to speed up pixel cache performance.

10 years agonotebook: Implement rtl flipping for CSS nodes
Matthias Clasen [Wed, 20 Jan 2016 02:38:30 +0000 (21:38 -0500)]
notebook: Implement rtl flipping for CSS nodes

Use gtk_box_gadget_reverse_children and gtk_css_node_reverse_children
to flip the children of the header_gadget and the tabs_gadget when
appropriate.

Add new CSS node tests to verify that the node order is updated
as expected in all cases.

10 years agocss: AFFFECTS_TEXT causes a resize, not a redraw
Benjamin Otte [Wed, 20 Jan 2016 01:37:45 +0000 (02:37 +0100)]
css: AFFFECTS_TEXT causes a resize, not a redraw

And we schedule the resize conditionally only when text is rendered but
don't do that check for the redraw.

10 years agowidget: Properly invalidate when CSS font properties change.
Benjamin Otte [Wed, 20 Jan 2016 01:17:32 +0000 (02:17 +0100)]
widget: Properly invalidate when CSS font properties change.

10 years agoUpdated POTFILES.in and POTFILES.skip
Piotr Drąg [Wed, 20 Jan 2016 00:43:38 +0000 (01:43 +0100)]
Updated POTFILES.in and POTFILES.skip

10 years ago3.19.7
Matthias Clasen [Tue, 19 Jan 2016 13:16:11 +0000 (08:16 -0500)]
3.19.7

10 years agoUpdate expected output of a11y tests
Matthias Clasen [Tue, 19 Jan 2016 14:18:33 +0000 (09:18 -0500)]
Update expected output of a11y tests

This reflects my recent change to messagedialog titles.

10 years agoSimplify foreign drawing example
Matthias Clasen [Tue, 19 Jan 2016 11:28:55 +0000 (06:28 -0500)]
Simplify foreign drawing example

This is code will be copied, so take out unnecessary complication.

10 years agoUse actual drop status
Matthias Clasen [Tue, 19 Jan 2016 12:13:57 +0000 (07:13 -0500)]
Use actual drop status

We have this information in the XDND protocol, so we don't have
to blindly assume that the drop succeeded.

10 years agogdk: Document the functions that don't need calling on managed DnD
Carlos Garnacho [Mon, 18 Jan 2016 21:22:24 +0000 (22:22 +0100)]
gdk: Document the functions that don't need calling on managed DnD

These functions will be automatically called by the windowing backend.
The usual hooks to run this from in gtk/ shouldn't even happen, but
it is worth to document which calls are expected and which aren't.

10 years agowayland: Set weak reference on the current grab window
Carlos Garnacho [Mon, 18 Jan 2016 13:05:00 +0000 (14:05 +0100)]
wayland: Set weak reference on the current grab window

If the grab window is destroyed the grab will be implicitly removed,
although we won't get GdkSeat:ungrab called in order to clear our
internal window<->seat relation entirely. Setting a weak ref will
nullify the pointer we keep on the seat to the window, avoiding the
expected crashes.

10 years agowayland: Unset button modifiers on pointer enter
Carlos Garnacho [Mon, 18 Jan 2016 12:31:35 +0000 (13:31 +0100)]
wayland: Unset button modifiers on pointer enter

Due to implicit grabs, we basically can guarantee that the pointer
won't have any buttons pressed at the time of wl_pointer.enter.
Seems like a good place to unset any button modifiers that might
have been left stale by compositor grabs.

10 years agowayland: Implement DnD actions as per wl_data_device v3
Carlos Garnacho [Wed, 13 Jan 2016 20:00:34 +0000 (21:00 +0100)]
wayland: Implement DnD actions as per wl_data_device v3

Implement as a managed GdkDragContext, which actually fits nicely
with the drag-and-drop model in wayland.

10 years agowayland: Add internal gdk_wayland_seat_set_global_cursor()
Carlos Garnacho [Wed, 13 Jan 2016 19:57:47 +0000 (20:57 +0100)]
wayland: Add internal gdk_wayland_seat_set_global_cursor()

This can be used for cases (like DnD) where there isn't necessarily
a grab, but we want a global pointer cursor.

10 years agogtkdnd: Reset widget controllers when starting DnD.
Carlos Garnacho [Wed, 13 Jan 2016 19:54:43 +0000 (20:54 +0100)]
gtkdnd: Reset widget controllers when starting DnD.

Otherwise there's no full guarantees that this will happen.

10 years agogtk: Add private gtk_widget_reset_controllers()
Carlos Garnacho [Wed, 13 Jan 2016 19:53:54 +0000 (20:53 +0100)]
gtk: Add private gtk_widget_reset_controllers()

This is a one-shot call that can be called on the places we
know we're taking input away.

10 years agogtkdnd: Optionally use gdk_drag_context_manage_dnd()
Carlos Garnacho [Fri, 8 Jan 2016 20:31:51 +0000 (21:31 +0100)]
gtkdnd: Optionally use gdk_drag_context_manage_dnd()

When this is in use, there's essentially a bunch of dead code here.
When all backends are ported, we'll be able to remove grab/cursor
management plus a bunch of source-side event handlers.

10 years agox11: Implement gdk_drag_context_manage_dnd()
Carlos Garnacho [Fri, 8 Jan 2016 20:24:52 +0000 (21:24 +0100)]
x11: Implement gdk_drag_context_manage_dnd()

This includes managing input events and source-side DND events,
as well as setting the appropriate cursor and emitting the signals
that are expected in this mode of operation.

10 years agogdk: Add gdk_drag_get_cursor()
Carlos Garnacho [Wed, 13 Jan 2016 19:51:19 +0000 (20:51 +0100)]
gdk: Add gdk_drag_get_cursor()

This function (most similar to gtk_drag_get_cursor() helps figure out
the right cursor that applies to a given action. To be used by the
various backends.

10 years agogdk: Run DnD internal handlers before the main event handler
Carlos Garnacho [Fri, 8 Jan 2016 20:22:47 +0000 (21:22 +0100)]
gdk: Run DnD internal handlers before the main event handler

We'll be stealing those to GTK+, if the GdkDragContext manages
the DnD operation.

10 years agogdk: Allow internal management of source-side DnD
Carlos Garnacho [Fri, 8 Jan 2016 20:03:01 +0000 (21:03 +0100)]
gdk: Allow internal management of source-side DnD

We've traditionally left GTK+ to handle the input side of things,
letting GDK only manage the windowing-specific messaging. This
way of splitting responsibilities is not compatible however with
some backends, we must fold then input management at the DnD stage
into GDK (and backends) domain.

The gdk_drag_context_manage_dnd() call is meant to be the entry
point for this mode of operation, if the drag and drop operation
becomes managed, the caller (i.e. gtkdnd.c) doesn't need to perform
grabs, nor manage input events itself.

As a consequence of this, different aspects now belong to the
backend GdkDragContext implementation:
- Because the caller doesn't see keyboard events anymore,
  keyboard navigation must be managed in GDK, so is the decision
  of the current action based on modifiers/button pressed.
- Because the caller won't see input events in general, the lifetime
  of the drag and drop operation is now communicated through the
  ::drop-performed, ::dnd-finished and ::cancel events
- Because the caller doesn't participate anymore on the action
  being chosen, the pointer cursor must be set by the backend.
  The caller is rather notified of the final action through the
  ::action signal.

The caller is still responsible of dealing with the corresponding
GdkSelection, ensuring its ownership and communicating the supported
mimetypes.

10 years agowidget: Call gdk_window_mark_paint_from_clip() again
Benjamin Otte [Tue, 19 Jan 2016 13:11:36 +0000 (14:11 +0100)]
widget: Call gdk_window_mark_paint_from_clip() again

The proper window to call it is the event window, as the call itself
ignores non-native windows anyway.

10 years agoFixed typo childen->children
Marek Černocký [Tue, 19 Jan 2016 11:52:58 +0000 (12:52 +0100)]
Fixed typo childen->children

10 years agogtk-demo: Add a progress bar to foreigndrawing
Matthias Clasen [Tue, 19 Jan 2016 04:40:38 +0000 (23:40 -0500)]
gtk-demo: Add a progress bar to foreigndrawing

This is another commonly requested widget.

10 years agocontainer: Properly reorder no-window children
Benjamin Otte [Tue, 19 Jan 2016 03:33:09 +0000 (04:33 +0100)]
container: Properly reorder no-window children

... that are setup with gtk_widget_set_parent_window().

Fixes scrollbars not being drawn in GtkScrolledWindow.

10 years agowidget: Add forgotten push_group code
Benjamin Otte [Tue, 19 Jan 2016 03:24:32 +0000 (04:24 +0100)]
widget: Add forgotten push_group code

... and remove the also forgotten void function that lingered around
with it.

Fixes opacity=0 parts like inactive spinners or sort indicators in
treeview headers being drawn since last commit.

Oops.

10 years agowidget: Redo drawing code
Benjamin Otte [Tue, 19 Jan 2016 01:42:58 +0000 (02:42 +0100)]
widget: Redo drawing code

Previously, we had a special cae to draw subwindows of widgets.

This is not necessary as conformant widgets should be able to properly
render themselves when all windows need to be painted.
From now on assume that is the case.

We therefore paint nonnative GDK windows "inline" by just returning TRUE
for gtk_cairo_should_draw_window() for those windows.

This speeds up hilighting different rows in the listbox gtk-demo example
tremendously (by a factor of 10 or more) as the previous code was
O(<number of non-window subwidgets> *
<number of subwindows>) which in the listbox example were ~15,000 and
~2,000 respectively.

10 years agoactionbar: Don't forall() widgets twice
Benjamin Otte [Mon, 18 Jan 2016 23:53:55 +0000 (00:53 +0100)]
actionbar: Don't forall() widgets twice

When using forall(), only list the revealer, which lists the box
containing all the children. When using foreach(), bypass revealer and
box and list all children added to the box.

10 years agoUpdates
Matthias Clasen [Tue, 19 Jan 2016 01:20:32 +0000 (20:20 -0500)]
Updates

10 years agotext view: Expose cursor blink control
Matthias Clasen [Mon, 18 Jan 2016 19:54:25 +0000 (14:54 -0500)]
text view: Expose cursor blink control

Derived classes like GtkSourceView with their own ::key-event
handler need access to this, in order to make their keynav
as nice as the builtin one, wrt to caret visibility.

https://bugzilla.gnome.org/show_bug.cgi?id=760748

10 years agox11: Set event->scroll.is_stop
Carlos Garnacho [Thu, 14 Jan 2016 19:24:28 +0000 (20:24 +0100)]
x11: Set event->scroll.is_stop

We still figure this out from 0/0 scroll events. This method is
not intended to last forever, but it's something we can cling to
so far.

https://bugzilla.gnome.org/show_bug.cgi?id=756729

10 years agowayland: add gdk_event_is_scroll_stop_event()
Peter Hutterer [Wed, 21 Oct 2015 00:14:40 +0000 (10:14 +1000)]
wayland: add gdk_event_is_scroll_stop_event()

And use it to handle kinetic scrolling in the GtkScrolledWindow.

However, dropping the delta check causes the X11-based kinetic
scroll to break since we don't have the stop event here. Correct handling of
xf86-input-libinput-based scroll events is still being discussed.

https://bugzilla.gnome.org/show_bug.cgi?id=756729

10 years agowayland: add support for wl_pointer frame/axis_source/axis_discrete/axis_stop
Peter Hutterer [Tue, 20 Oct 2015 03:21:54 +0000 (13:21 +1000)]
wayland: add support for wl_pointer frame/axis_source/axis_discrete/axis_stop

This adds support for the new wl_pointer events available in v5.

The wl_pointer.axis_source events can be ignored for the purposes here, the
main reason they exist is so that the combination of axis_source=finger and
axis_stop triggers kinetic scrolling. We don't need to care about the source,
axis_stop is enough for us to tell us when we're scrolling.

The wl_pointer.frame events group events together and is intended as a
mechanism to coalesce events together. This for example allows us to now
send a single GTK scroll event for a diagonal scroll. Previously, the two
wl_pointer.axis events had to be handled separately.

The wl_pointer.axis_discrete event sends mouse wheel clicks where
appropriate, and is translated into up/down/left/right scroll events.

https://bugzilla.gnome.org/show_bug.cgi?id=756729

10 years agoDrop a reference to regions
Matthias Clasen [Mon, 18 Jan 2016 19:31:37 +0000 (14:31 -0500)]
Drop a reference to regions

Regions don't work anymore, so don't recommend them in the docs.

10 years agoim context simple: Protect shared data structures
Matthias Clasen [Mon, 18 Jan 2016 18:54:20 +0000 (13:54 -0500)]
im context simple: Protect shared data structures

Since a41f02f9b1843e0f0085f801430e55f413a9bf9c, GtkIMContextSimple
uses threads to load X Compose files. It does that every time a new
im context object is initialized, so we can easily end up with multiple
threads accessing the shared global_tables list at the same time.

Use a lock to prevent that.

https://bugzilla.redhat.com/show_bug.cgi?id=1276432

10 years agocssnode: Don't leak the style cache on destruction
Benjamin Otte [Mon, 18 Jan 2016 17:05:53 +0000 (18:05 +0100)]
cssnode: Don't leak the style cache on destruction

10 years agogdkdisplay-x11: Plug memory leak
Timm Bäder [Mon, 18 Jan 2016 16:22:09 +0000 (17:22 +0100)]
gdkdisplay-x11: Plug memory leak

10 years agotext view: Update selection node visibility
Matthias Clasen [Mon, 18 Jan 2016 16:05:53 +0000 (11:05 -0500)]
text view: Update selection node visibility

Make the node invisible if we don't have a selection.

10 years agoentry: Expand the css node docs
Matthias Clasen [Mon, 18 Jan 2016 15:52:26 +0000 (10:52 -0500)]
entry: Expand the css node docs

Mention the context menu.

10 years agotext view: Expand CSS node docs
Matthias Clasen [Mon, 18 Jan 2016 15:51:54 +0000 (10:51 -0500)]
text view: Expand CSS node docs

Mention the selection node, and the context menu.

10 years agoForgotten file
Matthias Clasen [Mon, 18 Jan 2016 14:06:12 +0000 (09:06 -0500)]
Forgotten file

10 years agonotebook: Don't crash when dnd'ing tabs out
Benjamin Otte [Mon, 18 Jan 2016 14:01:49 +0000 (15:01 +0100)]
notebook: Don't crash when dnd'ing tabs out

https://bugzilla.gnome.org/show_bug.cgi?id=760754

10 years agoaccellabel: Remove unused variable
Benjamin Otte [Mon, 18 Jan 2016 14:01:38 +0000 (15:01 +0100)]
accellabel: Remove unused variable

10 years agogdk: Clarify docs about scale
Matthias Clasen [Mon, 18 Jan 2016 13:54:35 +0000 (08:54 -0500)]
gdk: Clarify docs about scale

Explicitly state where we return application pixels as opposed
to device pixels.

10 years agoTrivial typo fix
Matthias Clasen [Mon, 18 Jan 2016 13:36:53 +0000 (08:36 -0500)]
Trivial typo fix

10 years agoAdd more CSS node tests for notebooks
Matthias Clasen [Mon, 18 Jan 2016 12:39:56 +0000 (07:39 -0500)]
Add more CSS node tests for notebooks

10 years agoentry: Deprecate shadow-type
Timm Bäder [Mon, 18 Jan 2016 11:46:18 +0000 (12:46 +0100)]
entry: Deprecate shadow-type

Things like that should be handled using css. Also, the property value
is unused inside GtkEntry.

10 years agoW32: Detect ticks wraparound
Руслан Ижбулатов [Wed, 22 Apr 2015 19:21:53 +0000 (19:21 +0000)]
W32: Detect ticks wraparound

https://bugzilla.gnome.org/show_bug.cgi?id=748327

10 years agoAdd CSS node tests for checkbutton rtl flipping
Matthias Clasen [Mon, 18 Jan 2016 05:29:29 +0000 (00:29 -0500)]
Add CSS node tests for checkbutton rtl flipping

10 years agoAdd css node tests for expander rtl flipping
Matthias Clasen [Mon, 18 Jan 2016 05:24:53 +0000 (00:24 -0500)]
Add css node tests for expander rtl flipping

10 years agoexpander: Flip the alignment of the vertical box
Matthias Clasen [Mon, 18 Jan 2016 05:19:31 +0000 (00:19 -0500)]
expander: Flip the alignment of the vertical box

To ensure that the title moves to the other side as expected
in RTL, use GTK_ALIGN_START/END instead of GTK_ALIGN_FILL
when packing the title gadget into the vertical box, and
flip the alignment when the text direction changes.

10 years agoexpander: Handle rtl changes again
Matthias Clasen [Mon, 18 Jan 2016 05:11:54 +0000 (00:11 -0500)]
expander: Handle rtl changes again

Now that the box gadget has api for it, use it here to
change the order of the gadgets for right-to-left.

10 years agocheckbutton: Handle rtl changes again
Matthias Clasen [Mon, 18 Jan 2016 05:04:23 +0000 (00:04 -0500)]
checkbutton: Handle rtl changes again

Now that the box gadget has api for it, use it here to
change the order of the gadgets for right-to-left.

10 years agobox gadget: Add a function to reverse children
Matthias Clasen [Mon, 18 Jan 2016 05:03:39 +0000 (00:03 -0500)]
box gadget: Add a function to reverse children

This can be used to handle text direction changes.

10 years agoreftests: Fix up for easy CSS changes
Benjamin Otte [Mon, 18 Jan 2016 04:04:12 +0000 (05:04 +0100)]
reftests: Fix up for easy CSS changes

This is mostly search and replace ala
  GtkButton => button
  GtkWindow => window
  .button => button
or removing style properties that aren't used anymore like
  -GtkButton-default-border: 0